package com.springdatecrm.web.service.impl;

import com.springdatecrm.web.entity.UserBean;
import com.springdatecrm.web.repository.UserBeanRepository;
import com.springdatecrm.web.service.UserBeanService;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service("userBeanService")
//配置缓存：当我们需要缓存的地方越来越多
//你可以使用@CacheConfig(cacheNames={"myCache"})注解来统一指定value的值，
//这是可以省略value，
//如果你在你的方法依旧写上了value，那么依然以方法的value值为准
public class UserBeanServiceImpl implements UserBeanService {

    @Resource
    private UserBeanRepository userBeanRepository;

    //配置缓存：注解会先查询是否已经有了缓存，有会使用缓存，没有则会执行方法并缓存
    //此处的value是必须的，它指定了你的缓存存放在哪块命名空间
    //keyGenerator：缓存数据时key生成策略
    @Override
    @Cacheable(value = "getUser",keyGenerator = "keyGenerator")
    public UserBean getUser(String usrName) {

        UserBean userBean = userBeanRepository.findUserBeanByUsrName(usrName);

        return userBean;
    }
}
